package com.ksyun.cloudhostalarmprocessing.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ksyun.cloudhostalarmprocessing.common.Request;
import com.ksyun.cloudhostalarmprocessing.entity.Metrics;
import org.springframework.beans.factory.annotation.Value;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;


public class MetricsTestData {

    @Value("${file.metricsTestData.url}")
    private static String metricsTestDataUrl;

    /**
     * 读取测试文件
     * @return
     */
    public static List<Request> read(){
        List<Request> requestList = new ArrayList<>();

        try {
            // 读取文件内容
            byte[] fileContent = Files.readAllBytes(new File(metricsTestDataUrl).toPath());
            String jsonString = new String(fileContent, StandardCharsets.UTF_8);

            // 解析JSON字符串
            if (jsonString.startsWith("[")) { // 如果JSON是一个数组（例如：[{...}, {...}, ...]）
                JSONArray jsonArray = JSONArray.parseArray(jsonString);
                for (Object obj : jsonArray) {
                    JSONObject jsonObject = (JSONObject) obj;
                    Request request = JSONObject.toJavaObject(jsonObject, Request.class);
                    requestList.add(request);
                }
            } else if (jsonString.startsWith("{")) { // 如果JSON是一个对象（例如：{"metrics": [{...}, {...}, ...]}）
                JSONObject jsonObject = JSONObject.parseObject(jsonString);
                JSONArray requestArray = jsonObject.getJSONArray("request"); // 假设JSON对象有一个"metrics"数组
                for (Object obj : requestArray) {
                    JSONObject requestObj = (JSONObject) obj;
                    Request request = JSONObject.toJavaObject(requestObj, Request.class);
                    requestList.add(request);
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        return requestList;
    }
}
